package factory;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import classesDAO.ClienteDAO;
import classesDAO.CobrancaDAO;
import classesDAO.ContatoCobrancaDAO;
import classesDAO.ContatoDAO;
import classesDAO.DominioDAO;
import classesDAO.EnderecoDAO;
import classesDAO.EnderecoFuncionarioDAO;
import classesDAO.FuncionarioDAO;
import classesDAO.PeriodoDAO;
import classesDAO.ServicoDAO;
import classesDAO.ServidorDAO;
import classesDAO.SistemaDAO;
import classesDAO.TelaSiteDAO;
import classesDAO.TipoServicoDAO;
import classesDAO.TipoSistemaDAO;
import classesDAO.UsuarioDAO;



public abstract class FactoryDAO {
	private static EntityManager em;
	private static final EntityManagerFactory emf;
	
	static{
	
		emf = Persistence.createEntityManagerFactory("gugateste");
		
		if (em == null)
		{
			em = emf.createEntityManager();
		}
	}
	
	public static ClienteDAO getClienteDAO(){
		ClienteDAO clienteDAO = new ClienteDAO();
		clienteDAO.setEntityManager(em);
		
		return clienteDAO;		

	}
	
	public static CobrancaDAO getCobracaDAO(){
		CobrancaDAO cobrancaDAO = new CobrancaDAO();
		cobrancaDAO.setEntityManager(em);
		return cobrancaDAO;
	}
	
	public static ContatoDAO getContatoDAO(){
		ContatoDAO contatoDAO = new ContatoDAO();
		contatoDAO.setEntityManager(em);
		return contatoDAO;
	}
	
	public static ContatoCobrancaDAO getContatoCobrancaDAO(){
		ContatoCobrancaDAO contatoCobrancaDAO = new ContatoCobrancaDAO();
		contatoCobrancaDAO.setEntityManager(em);
		return contatoCobrancaDAO;
		
	}
	
	
	public static DominioDAO getDominioDAO(){
		DominioDAO dominioDAO = new DominioDAO();
		dominioDAO.setEntityManager(em);
		return dominioDAO;
		
	}
	
	
	public static EnderecoDAO getEnderecoDAO(){
		EnderecoDAO enderecoDAO = new EnderecoDAO();
		enderecoDAO.setEntityManager(em);
		return enderecoDAO;
		
	}
	
	public static EnderecoFuncionarioDAO getEnderecoFuncionarioDAO(){
		EnderecoFuncionarioDAO enderecoFuncionarioDAO = new EnderecoFuncionarioDAO();
		enderecoFuncionarioDAO.setEntityManager(em);
		return enderecoFuncionarioDAO;
		
	}
	
	public static FuncionarioDAO getFuncionarioDAO(){
		FuncionarioDAO funcionarioDAO = new FuncionarioDAO();
		funcionarioDAO.setEntityManager(em);
		return funcionarioDAO;
		
	}
	
	public static PeriodoDAO getPeriodoDAO(){
		PeriodoDAO periodoDAO = new PeriodoDAO();
		periodoDAO.setEntityManager(em);
		return periodoDAO;
		
	}
	
	public static ServicoDAO getServicoDAO(){
		ServicoDAO servicoDAO = new ServicoDAO();
		servicoDAO.setEntityManager(em);
		return servicoDAO;
		
	}
	
	public static ServidorDAO getServidorDAO(){
		ServidorDAO servidorDAO = new ServidorDAO();
		servidorDAO.setEntityManager(em);
		return servidorDAO;
		
	}
	
	public static SistemaDAO getSistemaDAO(){
		SistemaDAO sistemaDAO = new SistemaDAO();
		sistemaDAO.setEntityManager(em);
		return sistemaDAO;
		
	}
	
	public static TelaSiteDAO getTelaSiteDAO(){
		TelaSiteDAO telaSiteDAO = new TelaSiteDAO();
		telaSiteDAO.setEntityManager(em);
		return telaSiteDAO;
		
	}
	
	public static TipoServicoDAO getTipoServicoDAO(){
		TipoServicoDAO tipoServicoDAO = new TipoServicoDAO();
		tipoServicoDAO.setEntityManager(em);
		return tipoServicoDAO;
		
	}
	
	public static TipoSistemaDAO getTipoSistemaDAO(){
		TipoSistemaDAO tipoSistemaDAO = new TipoSistemaDAO();
		tipoSistemaDAO.setEntityManager(em);
		return tipoSistemaDAO;
		
	}
	
	public static UsuarioDAO getUsuarioDAO(){
		UsuarioDAO usuarioDAO = new UsuarioDAO();
		usuarioDAO.setEntityManager(em);
		return usuarioDAO;
		
	}
	
}